﻿'''
题目描述
通常使用多行的节点、父节点表示一棵树，比如
西安 陕西
陕西 中国
江西 中国
中国 亚洲
泰国 亚洲
输入一个节点之后，请打印出来树中他的所有下层节点
输入描述
第一行输入行数，下面是多行数据，每行以空格区分节点和父节点
接着是查询节点
输出描述
输出查询节点的所有下层节点。以字典序排序
示例1
输入
5
b a
c a
d c
e c
f d
c
输出
d
e
f
说明
解题思路
这个题目描述了一棵树的结构，并要求我们找到一个给定节点的所有下层节点（即该节点的所有子节点及其后代节点）。
示例解释
输入：
5
b a
c a
d c
e c
f d
c
解析：
树结构的表示：
b 的父节点是 a
c 的父节点是 a
d 的父节点是 c
e 的父节点是 c
f 的父节点是 d
查询节点为 c，我们需要找出所有 c 的下层节点。
根据上述结构，我们可以构建以下树：

        a
       / \
      b   c
         / \
        d   e
       /
      f
查询节点：c
输出结果：
c 的直接下层节点是 d 和 e。
d 的下层节点是 f。
因此，c 的所有下层节点为：d, e, f。
字典序排序后，输出结果为：
d
e
f
'''
'''
from collections import defaultdict

#读取输入
n = int(input())
dict_arr = defaultdict(list)

for _ in range(n):
    child,parent = input().split()
    dict_arr[parent].append(child)  #按父亲孩子存储
query_list = list(input())  #读取查找字符
char_remove = []
result = []
while len(query_list) != 0:
    current_result = []
    for query_char in query_list:
        query_char = str(query_char)
        if query_char not in dict_arr:
            char_remove.append(query_char)
            continue
        else:
            for c_list in dict_arr[query_char]:
                for c in c_list:
                    current_result.append(c)
            char_remove.append(query_char)
    for c in char_remove:
        if c in query_list:
            query_list.remove(c)
    char_remove.clear()
    if not current_result:
        break
    else:        
        for c_list in current_result:
            for c in c_list:
                query_list.append(c)
                result.append(c)
#排序输出结果
result.sort()
for c in result:
    print(c)
'''
n = int(input())  # 输入行数

tree = {}  # 创建一个字典用于存储树的关系

# 读取输入的树的关系，并将子节点和父节点存入字典中
for _ in range(n):
    childNode, parentNode = input().split()  # 子节点和父节点

    if parentNode not in tree:
        tree[parentNode] = set()  # 如果父节点不在字典中，则创建一个空集合

    tree[parentNode].add(childNode)  # 将子节点添加到父节点的集合中

targetNode = input()  # 输入要查询的节点

if targetNode not in tree:  # 如果字典中不包含要查询的节点，则输出空行并结束程序
    print("")
    exit()

queue = list(tree[targetNode])  # 创建一个队列，用于存储要遍历的节点

result = []  # 创建一个列表，用于存储查询节点的所有下层节点

# 遍历队列，将节点添加到结果集中，并将该节点的子节点添加到队列中
while queue:
    node = queue.pop(0)  # 从队列中取出节点
    result.append(node)  # 将节点添加到结果集中

    if node in tree:  # 如果节点在字典中有子节点，则将子节点添加到队列中
        queue.extend(tree[node])

result.sort()  # 对结果集进行排序

for node in result:  # 打印结果集中的每个节点
    print(node)
